package com.ruoyi.system.mapper;

import java.util.List;
import java.util.Map;

import com.ruoyi.system.domain.LabinfoSampleData;
import com.ruoyi.system.domain.SampleCustom;
import com.ruoyi.system.domain.SampleStaff;
import org.apache.ibatis.annotations.Param;


/**
 * 样本信息Mapper接口
 *
 * @author ruoyi
 * @date 2023-07-03
 */
public interface LabinfoSampleDataMapper
{
    /**
     * 查询样本信息
     *
     * @param id 样本信息主键
     * @return 样本信息
     */
    public LabinfoSampleData selectLabinfoSampleDataById(Long id);

    /**
     * 查询样本信息列表
     *
     * @param labinfoSampleData 样本信息
     * @return 样本信息集合
     */
    public List<LabinfoSampleData> selectLabinfoSampleDataList(LabinfoSampleData labinfoSampleData);



    /**
     * 查询样本信息列表（样本统计页面）
     *
     * @param labinfoSampleData 样本信息
     * @return 样本信息集合
     */
    public List<Map> selectLabinfoSampleDataListByMap(LabinfoSampleData labinfoSampleData);
    /**
     * 新增样本信息
     *
     * @param labinfoSampleData 样本信息
     * @return 结果
     */
    public int insertLabinfoSampleData(LabinfoSampleData labinfoSampleData);

    /**
     * 修改样本信息
     *
     * @param labinfoSampleData 样本信息
     * @return 结果
     */
    public int updateLabinfoSampleData(LabinfoSampleData labinfoSampleData);

    /**
     * 删除样本信息
     *
     * @param id 样本信息主键
     * @return 结果
     */
    public int deleteLabinfoSampleDataById(Long id);

    /**
     * 批量删除样本信息
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteLabinfoSampleDataByIds(Long[] ids);


    List<Map> getReceiveSampleDateList(@Param("sjdwName") String sjdwName,@Param("patientPhone") String patientPhone);

    List<LabinfoSampleData> getSampleList(@Param("sjdwName") String sjdwName,@Param("patientPhone") String patientPhone,
                                          @Param("getSampleDate") String getSampleDate,@Param("sampleDecWay") String sampleDecWay);

    List<LabinfoSampleData> getSampleListBySampleSerialNumber(@Param("sampleSerialNumber") String sampleSerialNumber);


    /**
     * 查询列表（注册用户所见页面）
     */
    public List<Map> getSampleListBySampleDecWay(@Param("sampleDecWay") String sampleDecWay,@Param("sjys") String sjys,
                                                               @Param("deptId") Long deptId, @Param("sharedId") String sharedId,@Param("searchValue") String searchValue);


    //获取所有的样本数据（导出专用）
    public List<LabinfoSampleData> getAllSampleDataList(@Param("fieldName") String fieldName,@Param("sampleDecWay") String sampleDecWay,@Param("sjys") String sjys,
                                                        @Param("deptId") Long deptId, @Param("sharedId") String sharedId);

    /**
     * 判断表是否存在
     * @param columnName
     * @return
     */
    Integer isExitsColumn(@Param("tableName") String tableName,@Param("columnName") String columnName);


    /**
     * 查询样本信息列表
     *
     * @param labinfoSampleData 样本信息
     * @return 样本信息集合
     */
    public List<Map> getLabinfoSampleDataList(LabinfoSampleData labinfoSampleData);

    public List<Map> getLabinfoSampleDataListAdmin(LabinfoSampleData labinfoSampleData);

    Long selectIdBySampleSerialNumberAndSampleId(@Param("sampleSerialNumber") String sampleSerialNumber,@Param("sampleId") String sampleId);


    List<LabinfoSampleData> getSampleListByList(List<String> list);


    List<Map> exportSampleCustom(@Param("sql") String sql,@Param("sampleDecWay") String sampleDecWay, @Param("sjys") String sjys,
                                          @Param("deptId") Long deptId, @Param("sharedId") String sharedId);

    List<Map> exportSampleStaffOrAdmin(@Param("sql") String sql,@Param("sampleDecWay") String sampleDecWay);

}
